package br.com.vm.controller;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import br.com.vm.model.Mapa;
import br.com.vm.model.vo.MelhorRotaReq;
import br.com.vm.model.vo.MelhorRotaResp;
import br.com.vm.service.MapaService;

@Controller
public class MelhorRotaController {

	@Autowired
	private MapaService mapaService;

	@RequestMapping("/melhorRota/index")
	public String listMapas(Map<String, Object> map) {
		map.put("melhorRota", new MelhorRotaReq());
		try {
			map.put("mapas", new HashSet<Mapa>(mapaService.listarMapas()));
		} catch (Exception e) {
			map.put("mapas", new ArrayList<Mapa>());
		}
		return "melhorRota";
	}

	@RequestMapping(value = "/melhorRota/obterMelhorRota", method = RequestMethod.POST)
	public String obterMelhorRota(Map<String, Object> map,
			@ModelAttribute("melhorRota") MelhorRotaReq poMelhorRotaReq,
			BindingResult result) {
		MelhorRotaResp resp;
		try {
			resp = mapaService.obterMelhorRota(poMelhorRotaReq);

		} catch (Exception e) {
			resp = null;
		}
		map.put("melhorRotaResp", resp);
		try {
			map.put("mapas", new HashSet<Mapa>(mapaService.listarMapas()));
		} catch (Exception e) {
			map.put("mapas", new ArrayList<Mapa>());
		}

		return "melhorRota";
	}
}
